设置使用原始数据字段(1.0.8+)
raw('字段名')
在创建数据表格时,如果数据是由模型获取的,且模型中定义了修改器和获取器,那么获取器会起作用,而修改器不起作用。
假设User模型定义了获取器和修改器,以下代码仅作为演示,不需要深究为什么这么写。
// username字段的获取器public function getUsernameAttr($v){return '用户:'.$v;}// username字段的修改器public function setUsernameAttr(){return 123;}
创建数据表格
// 数据列表$data_list = User::where($map)->order('sort,id desc')->paginate();// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setTableName('admin_user') // 设置数据表名->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数->addColumns([ // 批量添加列['id', 'ID'],['username', '用户名'],['nickname', '昵称'],['nickname', '昵称', 'text.edit'],['email', '邮箱'],['mobile', '手机号'],['create_time', '创建时间', 'datetime'],['status', '状态', 'switch'],['right_button', '操作', 'btn']])->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮->addRightButton('custom', $btn_access) // 添加授权按钮->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮->setRowList($data_list) // 设置表格数据->fetch(); // 渲染页面

可以看到,由于$data_list使用自定义模型查询的,而且定义了获取器,所以最终显示的用户名,前面会显示‘用户:’。
使用原值显示
有时候,虽然模型中定义了获取器,但我们不希望使用获取器,而是使用字段的原值来显示,或者使用原值来处理数据,那么就需要用到raw()方法,指定某个字段或某些字段使用原值。
// 数据列表$data_list = User::where($map)->order('sort,id desc')->paginate();// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setTableName('admin_user') // 设置数据表名->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数->addColumns([ // 批量添加列['id', 'ID'],['username', '用户名'],['nickname', '昵称'],['nickname', '昵称', 'text.edit'],['email', '邮箱'],['mobile', '手机号'],['create_time', '创建时间', 'datetime'],['status', '状态', 'switch'],['right_button', '操作', 'btn']])->raw('username') // 使用原值->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮->addRightButton('custom', $btn_access) // 添加授权按钮->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮->setRowList($data_list) // 设置表格数据->fetch(); // 渲染页面
由于定义了->raw('username'),最终表格上显示的username字段值将不会再经过获取器,而是直接显示原值。
设置多个字段使用原值
->raw('username,nickname')或者使用数组->raw(['username', 'nickname'])
使用不存在的字段
如果模型中定义了获取器,并且该字段本身是不存在的,那么也需要用raw()方法设置,才能正常显示。
// username字段的获取器public function getUsernameAttr($v){return '用户:'.$v;}// 定义一个不存在的字段获取器public function getTestAttr(){return 123;}
// 数据列表$data_list = User::where($map)->order('sort,id desc')->paginate();// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setTableName('admin_user') // 设置数据表名->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数->addColumns([ // 批量添加列['id', 'ID'],['username', '用户名'],['nickname', '昵称'],['test', '测试'],['nickname', '昵称', 'text.edit'],['email', '邮箱'],['mobile', '手机号'],['create_time', '创建时间', 'datetime'],['status', '状态', 'switch'],['right_button', '操作', 'btn']])->raw('test') // 使用原值->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮->addRightButton('custom', $btn_access) // 添加授权按钮->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮->setRowList($data_list) // 设置表格数据->fetch(); // 渲染页面
